package net.hands.common;

import java.text.DecimalFormat;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * 说明:数字工具 
 * <br>
 * <p>这是一个开源的软件，请在LGPLv3下合法使用、修改或重新发布。</p>
 * @author 陈侃(cknet@126.com, 13910090885)
 *         http://code.google.com/p/simpleframework/
 *         http://www.simpleframework.net
 */
public abstract class NumberUtils {
	/**
	 * 数字格式容器
	 */
	private static Map<String, DecimalFormat> decimalFormats = new ConcurrentHashMap<String, DecimalFormat>();
   /**
   * 说明:格式化为双精度
   * @param number 数字
   * @return String
   * @update 2012-9-25 上午10:02:38
    */
	public static String formatDouble(final Number number) {
		return format(number, "#.##");
	}
   /**
   * 说明:格式化
   * @param number 数字
   * @param pattern 格式
   * @return String
   * @update 2012-9-25 上午10:03:01
    */
	public static String format(final Number number, final String pattern) {
		if (number == null) {
			return "0";
		}
		if (!StringUtils.hasText(pattern)) {//格式为空字符直接返回数字
			return number.toString();
		}
		DecimalFormat formatter = decimalFormats.get(pattern);
		if (formatter == null) {
			decimalFormats.put(pattern, formatter = new DecimalFormat(pattern));//存放格式信息
		}
		return formatter.format(number);//返回格式化后数据
	}
   /**
   * 说明:随机长整型
   * @param min 最小值
   * @param max 最大值
   * @return long
   * @update 2012-9-25 上午10:04:08
    */
	public static long randomLong(final long min, final long max) {
		return min + (long) (Math.random() * (max - min));
	}
   /**
   * 说明:随机整型
   * @param min 最大值
   * @param max 最小值
   * @return int
   * @update 2012-9-25 上午10:05:47
    */
	public static int randomInt(final int min, final int max) {
		return min + (int) (Math.random() * (max - min));
	}
}
